package com.zut.service.impl;

import com.zut.dao.StudentDao;
import com.zut.dao.impl.StudentDaoImpl;
import com.zut.entity.Student;
import com.zut.service.StudentService;
import com.zut.util.DateUtil;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 *  学生业务实现类
 */
public class StudentServiceImpl implements StudentService {

    //学生持久层对象
    private StudentDao stuDao = new StudentDaoImpl();


    /**
     * 添加学生
     *  1、 补全学生编号    班级编号由 年+班级id+数字
     *
     *  2、添加学生
     *
     * @param stu
     */
    @Override
    public void addStudent(Student stu) {

        //获取班级中的最大学号
        String maxId = stuDao.findMaxId(stu.getClassId());

        //判断当前班中是否有学生存在
        if(maxId==null){
            String sid = DateUtil.format("yyyy",new Date())+stu.getClassId()+1;
            stu.setId(sid);
        }else{

            //表示年的字符长度
            int beginIndex = 4;

            beginIndex = stu.getClassId()>9?beginIndex+2:beginIndex+1;

            //截取数字
            String num = maxId.substring(beginIndex);

            String sid = DateUtil.format("yyyy",new Date())+stu.getClassId()+(Integer.valueOf(num)+1);
            stu.setId(sid);
        }

        //调用持久层添加
        stuDao.addStudent(stu);
    }

    /**
     *
     * 查询所有学生
     * @return
     */
    @Override
    public List<Map<String, Object>> findAllStudent() {
        return stuDao.findAllStudents();
    }

    /**
     * 模糊查询学生
     * @param name
     * @return
     */
    @Override
    public List<Map<String, Object>> findStudentsLikeName(String name) {
        return stuDao.findStudentsLikeName("%"+name+"%");
    }

    /**
     * 根据班级名称查询
     * @return
     */
    @Override
    public List<Map<String, Object>> findStudentsByClassName(String className) {
        return stuDao.findStudentsLikeClassName("%"+className+"%");
    }

    /**
     * 修改学生班级
     * @param stuId
     * @param clsId
     */
    @Override
    public void updateClassesById(String stuId, String clsId) {
        stuDao.updateClassesById(stuId,clsId);
    }

    /**
     * 删除业务方法
     * @param stuId
     * @return
     */
    @Override
    public boolean deleteStudent(String stuId) {
       int i =  stuDao.deleteStudentById(stuId);
        return i>0;
    }

    /**
     * 查询需要进行成绩添加的学生信息
     * @param tid
     * @param id
     * @return
     */
    @Override
    public List<Student> findStudentsByTid(String tid, int id) {
        return stuDao.findStudentsByTidAndCid(tid,id);
    }

    /**
     * 学生登录
     * @param sid
     * @param password
     * @return
     */
    @Override
    public Student login(String sid, String password) {
        return stuDao.findStudentByIdAndPassword(sid,password);
    }

    /**
     * 修改密码的业务
     * @param id
     * @param newPwd
     */
    @Override
    public void updatePassword(String id, String newPwd) {
        stuDao.updatePassword(id,newPwd);
    }

    /**
     * 修改手机号
     * @param id
     * @param newPhoneNum
     */
    @Override
    public void updatePhoneNum(String id, String newPhoneNum) {
        stuDao.updatePhoneNum(id,newPhoneNum);
    }

    /**
     * 修改学生家庭住址
     * @param id
     * @param newAddress
     */
    public void updateAddress(String id, String newAddress) {
        stuDao.updateAddress(id,newAddress);
    }
}
